import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui'
import router from '@/router'
// 创建实例时配置默认值
const instance = axios.create({
  baseURL: 'https://slwl-api.itheima.net',
  // baseURL: process.env.VUE_APP_BASE_API, // 代理地址
  timeout: 5000

})

// 添加请求拦截器
instance.interceptors.request.use((config) => {
  // 在请求头上携带token
  config.headers.Authorization = store.getters.token
  return config
}, (error) => Promise.reject(error))

// 添加响应拦截器
instance.interceptors.response.use((response) => {
  // 判断是不是Blob
  if (response.data instanceof Blob) {
    return response.data // 返回了Blob对象
  }
  // 数据异常，但状态码正常
  const { code, msg } = response.data
  if (code === 1) {
    Message({
      message: msg,
      type: 'error',
      duration: 3 * 1000
    })
    // 不应该直接返回正常的信息
    // 返回 promise 拒接状态
    return Promise.reject(response) //  登录失败的时候,不再继续往下执行
  }
  return response.data // 数据剥离
}
, (error) => {
  // 状态码异常
  console.dir(error)
  Message({
    message: error.response.data.message,
    type: 'error',
    duration: 3 * 1000
  })

  if (error.response.status === 401) {
    // 调用vuex中的action
    store.dispatch('user/logout')
    // 跳转到登录页
    router.push('/login')
  }
  Promise.reject(error)
}
)

export default instance
